package cn.leetcode;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

public class Code3 {

    public static void main(String[] args) {
        int i = lengthOfLongestSubstringPlus("jbpnbwwd");
        System.out.println(i);
    }

    public static int lengthOfLongestSubstring(String s) {
        HashSet<Character> objects = new HashSet<>();
        int result = 0;
        for(int i=0; i<s.length(); i++){
            for (int j=i; j<s.length(); j++){
                char c = s.charAt(j);
                if(!objects.contains(c)){
                    objects.add(c);
                }else{
                    result = Math.max(objects.size(), result);
                    objects.clear();
                    break;
                }
            }
        }
        return Math.max(objects.size(), result);
    }

    public static int lengthOfLongestSubstringPlus(String s){

        Map<Character, Integer> map = new HashMap<>();
        int result = 0;
        int k = 0;
        for(int i=0; i < s.length(); i++){
            char c = s.charAt(i);
            Integer integer = map.get(c);
            if(integer==null || integer==0){
                map.put(c, 1);
            }else{
                map.put(c, 2);
                char ch = s.charAt(k);
                while (map.get(ch) < 2){
                    map.put(ch, 0);
                    k++;
                    ch = s.charAt(k);
                }
                map.put(ch, 1);
                k++;
            }
            int num = i + 1 - k;
            result = Math.max(result, num);
        }
        return result;
    }
}
